/**
 * @author Laboratio Av I
 * @since 18/04/2012 14:03:56
 */
package ar.edu.utn.frgp.banco.service.impl;

import java.util.ArrayList;
import java.util.List;
import ar.edu.utn.frgp.banco.dao.PlazosFijosDao;
import ar.edu.utn.frgp.banco.dao.impl.PlazosFijosDaoImpl;
import ar.edu.utn.frgp.banco.domain.PlazoFijo;
import ar.edu.utn.frgp.banco.exceptions.DataAccessException;
import ar.edu.utn.frgp.banco.exceptions.ServiceException;
import ar.edu.utn.frgp.banco.service.RecursoServicePlazoFijo;

public class RecursoServicePlazoFijoImpl implements RecursoServicePlazoFijo {

	private PlazosFijosDao plazoFijoDao;
	
	public RecursoServicePlazoFijoImpl() {      
		setPlazoFijoDao(new PlazosFijosDaoImpl());
	}
	
	public void setPlazoFijoDao(PlazosFijosDao plazoFijoDao) {
		this.plazoFijoDao = plazoFijoDao;
	}

	public PlazosFijosDao getPlazoFijoDao() {
		return plazoFijoDao;
	}
			
	@Override
	public void crearPlazosFijos(PlazoFijo pf) throws ServiceException {
		if (pf != null) {			
		    
				try {
					plazoFijoDao.altaPlazosFijos(pf);
				} catch (DataAccessException e) {
					throw new ServiceException("Error de acceso a BD."
							+ e.getMessage());
				}
		} else {
			throw new ServiceException("El objeto cuenta es null");
		}
	}
	
	@Override
	public List<PlazoFijo> listarPlazosFijosCliente(int dni,int bandera) 	throws ServiceException {
		List<PlazoFijo> plazosfijos = new ArrayList<PlazoFijo>();
		
		try {
			plazosfijos =  plazoFijoDao.traerPlazosFijosActivos(dni,bandera);
		} catch (DataAccessException e) {
			throw new ServiceException("Error de acceso a BD." + e.getMessage());
			}
		return plazosfijos;
	}

	@Override
	public void dasactivarPlazosFijos(int pf) throws ServiceException {
	
		try {
			
					plazoFijoDao.bajarPlazosFijos(pf);
			
			}
		  catch (DataAccessException e) {
			throw new ServiceException("Error de acceso a BD." + e.getMessage());
		  	}
	
	}
	
	public PlazoFijo listarPlazosFijosCodigo(int codpf) throws ServiceException {
		PlazoFijo plazofijo = new PlazoFijo();
		
		try {
			plazofijo =  plazoFijoDao.traerPlazosFijosVencidosPorCodigo(codpf);
		} catch (DataAccessException e) {
			throw new ServiceException("Error de acceso a BD." + e.getMessage());
			}
		return plazofijo;
	}
	
	public List<PlazoFijo> listarPlazosFijosActivosCliente(int dni) 	throws ServiceException {
		List<PlazoFijo> plazosfijos = new ArrayList<PlazoFijo>();
		
		try {
			plazosfijos =  plazoFijoDao.traerPlazosFijosActivos(dni);
		} catch (DataAccessException e) {
			throw new ServiceException("Error de acceso a BD." + e.getMessage());
			}
		return plazosfijos;
	}
	
	public List<PlazoFijo> listarPlazosFijosVencidosCliente(int dni) 	throws ServiceException {
		List<PlazoFijo> plazosfijos = new ArrayList<PlazoFijo>();
		
		try {
			plazosfijos =  plazoFijoDao.traerPlazosFijosVencidos(dni);
		} catch (DataAccessException e) {
			throw new ServiceException("Error de acceso a BD." + e.getMessage());
			}
		return plazosfijos;
	
	
	}
	
	

}
